<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>

    // ** 运算符  => es6新增
    // m**n    m^n     

    // console.log(2n**53n);
    // console.log(2n**53n + 1n);
    // console.log(2n**53n + 2n);
    // console.log(2n**53n + 3n);
    // console.log(2n**53n + 4n);
    
    // const node = null;
    // console.log(node?.loc);

    // ?. 链判断运算符  => 有值就继续向后取值,没有就停下来 返回null/undefined
    const node = {
        loc: {
            start: {
                line: 1,
                column: 5
            }
        }
    };

    // console.log(node?.loc);  // node && node.loc
    console.log(node?.loc?.start); //  node && node.loc && node.loc.start
    

    // ??  null判断运算符
    // ES2020 引入了一个新的 Null 判断运算符??。它的行为类似||，但是只有运算符左侧的值为null或undefined时，才会返回右侧的值。

    // x || y    => x ? x : y; 
    console.log(0||1);
    console.log(0??1);

    // x ?? y   => x !=null && x != undefined) ? x : y
    console.log(null||1);
    console.log(null??1);


</script>
</html>